package com.xci.core.setting;

import com.xci.sys.service.ParamService;

import javax.annotation.Resource;

/**
 * 应用程序配置参数
 */
public class AppSetting {
    @Resource
    private ParamService paramService;

    /**
     * 系统接口分页允许的最大页数
     */
    public int getSysApiMaxPageSize() {
        return paramService.getIntValueByCode("sys.api.maxPageSize", 500);//系统接口分页允许的最大页数
    }

    /**
     * 系统服务器名称
     */
    public String getSysApiServerName() {
        return paramService.getStringValueByCode("sys.api.serverName", "西交投测试服务器");
    }

    /**
     * 是否解析IP地址地理位置
     */
    public boolean isSysApiResolvingIpLocation() {
        return paramService.getBooleanValueByCode("sys.api.resolvingIpLocation", false);
    }

    /**
     * 系统用户密码强度检测正则表达式
     */
    public String getSysUserPasswordStrongPattern() {
        return paramService.getStringValueByCode("sys.user.passwordStrongPattern","(?=.*[0-9])(?=.*[a-zA-Z])(?=([\\x21-\\x7e]+)[^a-zA-Z0-9]).{6,}");
    }

    /**
     * 系统用户密码强度检测错误消息
     */
    public String getSysUserPasswordStrongErrorMsg() {
        return paramService.getStringValueByCode("sys.user.passwordStrongErrorMsg","您输入的密码过于简单，不满足密码策略。");
    }

    /**
     * 系统用户需要验证码重试次数
     */
    public int getSysUserRequireCaptchaCount() {
        return paramService.getIntValueByCode("sys.user.requireCaptchaCount", 1);//系统用户需要验证码重试次数
    }

    /**
     * 系统用户锁定允许的最大重试次数
     */
    public int getSysUserLockMaxRetryCount() {
        return paramService.getIntValueByCode("sys.user.lockMaxRetryCount",5);//系统用户锁定允许的最大重试次数
    }

    /**
     * 是否允许用户重复登录
     */
    public boolean isSysUserAllowRepeatLogin() {
        return paramService.getBooleanValueByCode("sys.user.allowRepeatLogin", false);//是否允许用户重复登录
    }

    /**
     * 密码有效天数
     */
    public int getSysUserPwdAvailableDays() {
        return paramService.getIntValueByCode("sys.user.pwdAvailableDays", 90);//密码有效天数
    }

    /**
     * 密码过期提醒天数
     */
    public int getSysUserPwdExpireRemindDays() {
        return paramService.getIntValueByCode("sys.user.pwdExpireRemindDays", 30);//密码过期提醒天数
    }
}